{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第十章　Monte Carlo 法\n",
    "\n",
    "\n",
    "作者：[王何宇](http://person.zju.edu.cn/wangheyu)\n",
    "\n",
    "[浙江大学数学科学学院](http://www.math.zju.edu.cn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这一章我们开始介绍Monte Carlo法的基础理论。从如何估算一个多维欧氏空间中的有界区域的体积（Volumn）开始。更一般的问题则是在相同区域中估算积分。当区域或目标函数复杂或者维数很高时，Monte Carlo法具有经典数值方法所无法取代的优势。因为经典的数值积分公式不但对积分区域和目标函数都有一定的连续性要求，而且都是维数相关的。而计数估计（Evaluating count）作为统计的一个基本问题，本质上是对某个概率的估算。因此这一章讨论的两个基本问题，事实上是整个随机计算领域的基础。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from __future__ import print_function, division\n",
    "\n",
    "# 这句话是非标准的python，用于ipthon或jupyter这样的系统中，表示绘图即刻自动展开。\n",
    "%matplotlib inline\n",
    "\n",
    "# 这里把全部Warning过滤掉了. \n",
    "# 参见https://docs.python.org/2/library/warnings.html\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "from scipy.special import comb, perm\n",
    "from scipy import stats\n",
    "import numpy as np\n",
    "import sys\n",
    "import matplotlib.pyplot as plt\n",
    "np.random.seed(250)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 体积估计\n",
    "\n",
    "令 $\\mathscr{R}$ 是一个包含在 $m$ 维超立方体\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\mathscr{J}^m = [0, 1]^m = [0, 1] \\times \\cdots \\times [0, 1]\n",
    "\\end{equation}\n",
    "$$\n",
    "中的 $m$ 维有界区域，且其体积 $\\lambda(\\mathscr{R})$ 未知。而对于一般的有界区域，我们假设可以通过适当的变换将其映射进 $\\mathscr{J}^m$。如果我们能够产生 $m$ 维均匀分布的点列\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\mathscr{K}_{m, n} = \\left\\{\\vec{x}^{(j)} = (x_1^{(j)}, x_2^{(j)},\n",
    "  \\cdots, x_m^{(j)}) \\in \\mathscr{J}^m, j = 1, \\cdots, n\\right\\},\n",
    "  \\label{eq::m_d_random_number}\n",
    "\\end{equation}\n",
    "$$\n",
    "则 $\\lambda(\\mathscr{R})$ 可以用 $\\bar{\\lambda}_n(\\mathscr{R})$ 来逼近。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**算法：体积估算**\n",
    "\n",
    "* 目标：估算 $\\lambda(\\mathscr{R})$。\n",
    "* 输入：包含在 $\\mathscr{J}^m$ 中的区域 $\\mathscr{R}$, 以及 $n$ 个计值点。\n",
    "* 输出：$\\bar{\\lambda}_n(\\mathscr{R})$。\n",
    "\n",
    "1. $j = 1$，$S = 0$；\n",
    "2. `While` $j \\leq n$：\n",
    "    * 从 $\\mathscr{K}_{m, n}$ 中取 $\\vec{x}^{(j)}$；\n",
    "    * $\\phi(\\vec{x}^{(j)}) = 0$；\n",
    "    * `If` $\\vec{x}^{(j)} \\in \\mathscr{R}，\\phi(\\vec{x}^{(j)}) = 1$；\n",
    "    * $S = S + \\phi(\\vec{x}^{(j)})$；\n",
    "    * j = j + 1；\n",
    "8. 计算 $\\bar{\\lambda}_n(\\mathscr{R}) = S/n$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这是一个一般性伪代码，从这里我们看到，本质上体积计算也是一种“counting”。那么这里的关键就是 $\\mathscr{K}_{m, n}$ 的构建。比如取均匀划分的网格点，则有\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\mathscr{K}_{m, n} = \\left\\{\\vec{x} = (x_1, \\cdots, x_m) : x_i =\n",
    "  \\frac{z_i + \\frac{1}{2}}{k}, z_i = 0, \\cdots, k - 1, i = 1, \\cdots,\n",
    "  m, n = k^m\\right\\}.\n",
    "  \\label{eq::m_d_lattice}\n",
    "\\end{equation}\n",
    "$$\n",
    "这个公式的含义是格点在第 $i$ 维的坐标 $x_i$ 可以取 $z_i = 0, \\cdots, k - 1$\n",
    "中的任何一个，可以重复取，这样的组合一共有 $n = k^m$ 个，每一组都代表了一个 $m$ 维超单位正方体 $\\mathscr{J}^m$ 中的均匀格点。\n",
    "\n",
    "我们不难画出 2 维的特例：\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def mesh_generator(k):\n",
    "    zi = range(k)\n",
    "    for z1 in zi:\n",
    "        for z2 in zi:\n",
    "            xi = (z1 + 1/2)/k\n",
    "            yi = (z2 + 1/2)/k\n",
    "            plt.scatter(xi, yi, color='b',marker='.', s=5)\n",
    "    plt.xlim(0.0, 1.0)\n",
    "    plt.ylim(0.0, 1.0)\n",
    "    axs = plt.gca()\n",
    "    axs.set_aspect('equal', 'box')\n",
    "    return"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面画出 $k = 10$："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "mesh_generator(10)\n",
    "plt.xticks(fontsize=15)\n",
    "plt.yticks(fontsize=15)\n",
    "plt.xlabel(r'x',fontsize=15) \n",
    "plt.xlabel(r'$x_1$',fontsize=15)\n",
    "plt.ylabel(r'$x_2$',fontsize=15)\n",
    "plt.savefig(r'lattice.pdf')"
   ]
  },
  {
   "attachments": {
    "lattice.png": {
     "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAAB3RJTUUH4goZCzEq4UoxGAAAIABJREFUeNrt3X10FPWh//HPZhNIGhIwCYQCsUQgkHgVqNBQArrFUEFR8frEba2oiFY86q3H58IvVq1tlaRRtNdjaSggF6GCR6Bee3lQYogViVwRkASBlFUoTyGbBGLIw/z+mCYSsgmbZDO7mX2/ztmTZCeZyfdhZj7zndkZh2EYhgAAAOA3YVQBAAAAAQsAAICABQAAQMACAAAAAQsAAICABQAAQMACAAAAAQsAAICABQAAQMACAAAAAQsAAICABQAAQMACAAAgYAEAAICABQAAQMACAAAgYAEAAICABQAAQMACAAAgYAEAAICABQAAQMACAAAgYAEAAICABQAAQMACAAAgYAEAABCwAAAAQMACAAAgYAEAABCwAAAAQMACAAAgYAEAABCwAAAAQMACAAAgYAEAABCwAAAAQMACAAAgYAEAABCwAAAAQk84VWBfhw4d0uHDh+VwOPT973+/U/OqqqrS+vXr5Xa7FRcXp8zMTPXv359KBgCAgGV/ixcv1ltvvaWioiIdPnxYkhQREaEzZ850eJ6rV6/W3XffrZMnT37bccLDlZWVpblz51LpAACcg1OENvOXv/xF69atk8fj0ZgxYzo9v8LCQs2YMUPV1dXKzs7W1q1btXz5cg0YMEDz5s3Tyy+/TKUDAHAOh2EYBtVgH/n5+brggguUmpqqqqoqXXDBBZ0awcrIyFBhYaEWLlyoWbNmNb2/e/dujRo1StHR0SotLVXv3r2pfAAACFj2V15e3qmAtX//fg0ZMkSJiYn66quvFB7e/Izy9ddfrzVr1mjp0qW67bbbqHAAAP6FU4RoVUFBgSRzFOvccCVJLpdLkjlqBgAACFjwQUlJiSRp4MCBXqcnJSVJkoqLi6ksAADOwqcI0arGTw3Gx8d7nd74fllZmdfp27dv14oVK5p+PnPmjNatW6epU6fK6XRSwQCCXn19vQoKCvT+++8rNjaWCoHPGMFCq2pqaiRJ0dHRXqf36tVLklRdXe3T/Orq6rR3717V19dTuQC6TcD69NNPm7aHgK8YwUKroqKiJEkVFRVep5eXl7cZwEaPHq3Ro0c3/VxRUaEFCxbo+eef50gQQLdQUVGhV199VT179qQy0C6MYKFVCQkJkqQTJ054nd54arBv375UFgAABCz4YsSIEZKk0tJSr9P37NkjSUpNTaWyAAAgYMEXLpdLYWFhKigo0KlTp1pMX7dunSQpMzOTygIAgICFs+Xk5Oj+++/Xxx9/3Oz9xMREXXPNNaqoqNCLL77YbNrGjRtVVFSkQYMG6aqrrqISAQA4Cxe528yaNWu0YMECSean9hq/Tp48uel35s2bp8svv7zp51WrVqmwsFBjx45Venp6s/nNnz9fH374oZ555hm53W65XC6VlJQoNzdXDodDCxYsUGRkJBUPAAABy77cbrc2bNjQ7D3DMJq9d8899/g8v5SUFG3atEmzZ89WXl6e8vLyJJk3GV2yZImmT59OpQMAcA6eRQifHThwQG63W/Hx8UpNTVVYWPvOMFdUVKh3797yeDzcpgFAt8B2Cx3FCBZ8lpycrOTkZCoCAIDz4CJ3AAAAAhYAAAABCwAAgIAFBJvaWmnjRqmy0vplb9kiHTpk/XJ37ZJ277Z+uYcOmWW2WmWl2ca1tfQt+pY9+hYIWEDQmz1bysyUzrlNV5d75RVpwgRp6FDpX8+2tsRHH0n/9m/SxReb31ulvNws64QJ0quvWlvX6elmG8+eTd+ib9mjb4GABQS9I0ckh0MqK5Pq661b7vHjUliYVFNj7QjHsWNmeR0O83srj/RraswyW7nc+nqzbR0Os63pW/QtO/QthDbugwXLdOZ+Ml9/LS1bJk2ZIl16qbU7hUWLpLQ08wjYyp3Cf/+3+f1Pf2rulKyyYYN5+ujOO6WYGOuWu2OH9N57ZnkHDrRuufQt+lZXbbdAwCJgIegDFgCw3UJ3wilCAAAAAhYAAAABCwAAgIAFAAAAAhYAAAABCwAAgIAFAAAAAhYAAAABCwAAgIAFAACAc4VTBQACweFw2L6MPIkMIGABAIEqSMtMUAMIWAAITwhQ/XY2iLW3HQl+AAELQBAHK7vtqAMVOL0t99y69ef/1jgvghZAwAIQBAHC7jtkf5XPH2HIirBH0AIIWAAIT7YLal0Vorwtv61lORwO2h8gYAEEp0CEAQQ+CHWmzRr/prX5E7IAAhZAiCJYhVTo6or5e+tzhCyAgAUQqghP6GQf4VOkAAELIFgRnGBByGIUCwQsALYMVuzcQMgCCFgA/BCs2JkBAAELgB9CFcEKwYJRLICABRCsAItCFkDAAkCwAghZQKeFUQXoLsrKArNcj0dqaOi6QHX263w7rcZXV2poMMscSm1sx77Vlupq82X1gUMo9i0QsICg9txzUkKCdN111i73nXekfv2kYcOkmpqu2emcT3GxYdmIVU2NWdZ+/cyyW+n66802fvZZ+lZXKimREhPNV0mJdcsNxb4FAhYQ9N57TzIMadMmqb7euuXm50u1tdL+/VJpqf+ClS/hyuEw5HAY2rbNuvKWlpplra01y26V+npp40azjf/2N/pWV9q2TaqqMl/0LaDrcA0WuoWcHGn+fOnWWyWn07rlPvSQdOyYNHKkNHx454NVW84epTp9WnrySfP76dOtK+/w4WY9f/aZWXarOJ3S4sXSihXSI4/Qt7rS9OnSAw90fd869zqsUOxbCG0Og6tlYZGKigr17t1bHo9HsbGxobWitSNcAXbs9921j4fydgudwwgWQLACABCwgO4drghVAGB/XOQOWBiuAAChgREswIJwxagVWA8AAhZsoKqqSuvXr5fb7VZcXJwyMzPVv3//Ds9v37592rlzp9xutxISEpSSkqLRo0ezEQUAgIAVGlavXq27775bJ0+e/Lahw8OVlZWluXPntmteFRUVuvPOO7V69eoW00aOHKnly5crNTWVSm/jqJ3RKwAIPVyDZTOFhYWaMWOGqqurlZ2dra1bt2r58uUaMGCA5s2bp5dffrld8/vZz36m1atXa9iwYVqyZIk+/vhjrVmzRpMmTdJnn32mq666SlVVVVR8KwhXAOsBQvSAm/tg2UtGRoYKCwu1cOFCzZo1q+n93bt3a9SoUYqOjlZpaal69+593nl9/fXXSkpKktPp1N69ezV48OCmaTU1NRo5cqSKi4u1fPlyzZgx47zzC4X7yZw7gsXqhZDdudjgHlihst1C12AEy0b279+vwsJCJSYmaubMmc2mpaWlaerUqSovL9fatWt9mt8///lPGYahwYMHNwtXktSzZ09NmDBBknTo0CEqn6N2AAABy54KCgokmaNY4eEtL69zuVySpHwfHwQ2ePBgOZ1OHTlyRGfOnGkx/eDBg5KkYcOGUfkAABCw7KmkpESSNHDgQK/Tk5KSJEnFxcU+zS8+Pl5z5sxRZWWl5syZ03StVUNDg1599VVt2LBBY8aM0dVXX03li4+l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0tKUnZ2turo625Q5Pj5ec+bMUWVlpebMmaOqqipJUkNDg1599VVt2LBBY8aM0dVXX812ECGD2zSg3U6ePNm0UW1tYytJZWVlAZlfsJe3NV999ZV++ctfyuFwNHvuo13KfOjQIT3xxBNyuVxenxhgp/IePny46avL5VJCQoJuuOEGVVVV6YMPPtAjjzyiLVu26K233grYDXv9Xebc3FwlJSUpNzdXS5cu1YABA3T8+HHV19frvvvu0/PPPy+n08l2ECGDESy0W01NjSQpOjra6/RevXpJkqqrqwMyv2Avrzcej0fXX3+9jh07pscee0yTJk2yVRtL0n333aeamhr98Y9/DLp7Ivm7vKdOnZJkjmSlp6dr9+7devPNN7Vu3Tpt3bpV/fr109tvv61ly5bZpswnTpzQtm3bdPz4cUVERCg6Olo9e/ZUdXW1duzYof3797MdBAELaEvjjTArKiq8Ti8vL29zw9PV8wv28p7r9OnTuu666/Tpp59q5syZev75523XxosXL9aaNWv0q1/9SkOHDg2ZPi1Jr7zyivr06dP0c1pamp544glJ0htvvGGLMp85c0Yul0srV67UY489prKyMu3cuVPHjx/XW2+9paKiIk2cOLHptBrbQYQCThGi3RISEpqOWL1pHBLv27dvQOYX7OU9N1xdffXVys/P14wZM/SnP/0pKJ7x6O8yP/roo+rXr58uueQSbdiwoen9I0eONO2gG9+//PLLLb/+zN/lbfy96OhoXXrppS2mZ2RkSJK++OILW7TxihUrtHv3brlcLj377LPNpt1444367LPP9Oyzz+rFF1/UH//4R7aDIGAB3owYMUKSVFpa6nX6nj17JEmpqakBmV+wl7dRTU2Nbr75Zm3evFk33HCDlixZEjTXqPi7zOXl5aqtrdXUqVO9Tvd4PJo8ebIk6ejRo5bvlPxd3rS0NElSz549vZ4OjYyMlCTV1tbaoo137twpSRo3bpzX6ePHj5ckff7552wHQcACWuNyuRQWFqaCggKdOnWqxRD4unXrJEmZmZkBmV+wl7dxxOamm27Su+++qylTpmj58uUBvS1DV5f5D3/4g9dbFJw4cUJPPfWUYmJiNH/+fElSTExMty/vuHHjFBsbq7KyMh05ckSJiYnNpu/atUuSNGTIEFu0cWPfPX78uNfpR48elaSAfjK2O2wXYDPcCgwdce211xqSjKysrGbvb9iwwXA4HMagQYOM6urqZtOys7ONOXPmeL3xYkfmF+zlba3MNTU1TTchnDx5ckDLZWUbt3bTUQXJndz9Xd6HHnrIkGT8/Oc/b/b+6dOnjVGjRhmSjJycHFuU+a9//ashyejTp49x8ODBZr//zTffGN///vcNScaTTz7Z7W402p23WwgsAhY6pLi42OjTp4/hcDiMu+66y1iyZIkxd+5co1evXkZYWJjx9ttvt/ibxsdKLFq0yC/zC/bytlbmnJycpru1Z2RkGJmZmV5fpaWltmrjYA9Y/i7viRMnjCFDhhiSjGnTphmvvfaaMX/+fOOSSy4xJBmXXXZZwHe+/ipzfX29ccUVVzQ9sPyXv/ylsXjxYuO3v/2tkZKSYkgyvvvd7xr//Oc/A1red955p2n9crlchiTD4XA0W+82b95sm+0WCFjopj799FPjsssua/YU+aSkJGP16tU+h43OzC/Yy9tamZ977rlm82jttXPnTtu1cTAHrK4o78GDB41p06YZYWFhTfOLiIgwZs6caZw8edJWZfZ4PMacOXOM73znO83mFRYWZlx77bXGvn37Al7WV1555bzr3cqVK2213ULgOAzDMDhRis44cOCA3G634uPjlZqa2ulPwfl7fsFe3lBs41Ar79GjR7V37145nU5dfPHFAbnOzKoy19TUqLi4WMeOHVNsbKyGDx+u2NhY1hGEHAIWAACAnxGxAQAACFgAAAAELAAAAAIWAAAACFgAAAAELAAAAAIWAAAACFgAAAAELAAAAAIWAAAAzhVOFQAIdqtWrdKJEyeUmZmpiy66qNm0hoYGvfHGG/rmm2/04x//WIMHD6bCAAQcI1gAgt7hw4d177336sEHH2wx7Re/+IVmzpyp//3f/1VSUhKVBSAo8LBnAEGvrq5Ol156qb744gu9//77crlckqSnnnpKv/nNb/TjH/9Ya9euVY8ePagsAEGBESwAQS88PFy//vWvJUlz586VJL3yyiv6zW9+o/Hjx2v16tWEKwBBhREsAN3GxIkTVVBQoLvuukuLFi3SZZddpo0bNyo2NpbKAUDAAoCO2Lp1q8aNGyfDMJSSkqL8/HwlJia2+L3y8nJ9+OGHKioq0uHDh3XFFVfoJz/5CRUIwDJ8ihBAt7F9+/am7++66y6v4UqS/vKXv+j+++/XxRdfrC+//FLh4eEELACW4hosAN3CihUrNGfOHI0YMUJRUVF64YUXdPLkSa+/e/PNN6uiokLbt2/XoEGDqDwABCwAONeGDRs0c+ZMDRw4UH/729/0wAMPqKysTM8//7zX3+/Tp48iIyOpOAAELADw5u9//7umT5+u3r17a/369UpKStKTTz6puLg4vfzyy9q3bx+VBICABQC++vzzz3X11VcrPDxc7733noYPHy7JHKF69NFHdebMGc2bN4+KAkDAAgBffPnll/rxj3+sb775RmvXrtXo0aObTX/ooYc0aNAgvfnmm/roo4+oMABB5f8D8S9T2VzCodoAAAAASUVORK5CYII="
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到 $k$ 代表了在一个维度上的均匀格点个数。每一个格点，均是一个体积为 $1 / k^m = 1 / n$ 的小超正方体的中心。因此落在 $\\mathscr{R}$ 内的格点个数 $S$ 可以估算出 $\\mathscr{R}$ 的体积\n",
    "$$\n",
    "\\lambda(\\mathscr{R}) \\approx \\bar{\\lambda}_n(\\mathscr{R}) =\n",
    "\\frac{S}{n}.\n",
    "$$\n",
    "![lattice.png](attachment:lattice.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果我们用 $s(\\mathscr{R})$ 表示二维区域 $\\mathscr{R}$ 的边长，那么通过观察不难看出绝对误差有上界估计\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\left|\\bar{\\lambda}_n(\\mathscr{R}) - \\lambda(\\mathscr{R})\\right|\n",
    "  \\leq \\frac{s(\\mathscr{R})}{k}.\n",
    "\\end{equation}\n",
    "$$\n",
    "\n",
    "事实上，包含了不确定的绝对误差部分最大不会超过长度为 $s(\\mathscr{R})$，宽度为 $1/k$ 的条状地带面积。而更一般的，如果用 $s(\\mathscr{R})$ 表示一个 $m$ 维区域 $\\mathscr{R}$ 的表面积，则对应的绝对误差界也是上式。由 $n = k^m$，有\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\left|\\bar{\\lambda}_n(\\mathscr{R}) - \\lambda(\\mathscr{R})\\right|\n",
    "  \\leq \\frac{s(\\mathscr{R})}{n^{\\frac{1}{m}}},\n",
    "\\end{equation}\n",
    "$$\n",
    "也即误差收敛率随 $m$ 上升而下降。或者说，如果要保证误差小于 $\\varepsilon \\in (0, 1)$，则\n",
    "需要\n",
    "$$\n",
    "n(\\varepsilon) =\n",
    "\\left\\lceil\\left(\\frac{s(\\mathscr{R})}{\\varepsilon}\\right)^m\\right\\rceil\n",
    "$$\n",
    "个点才能保证。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Monte Carlo 法体积估计\n",
    "\n",
    "而 Monte Carlo 方法只改变其中一步，即将序列 $\\{\\vec{x}^{(1)}, \\cdots, \\vec{x}^{(n)}\\}$ 从一个确定的序列，改成一系列在 $\\mathscr{J}^m$中均匀分布的独立随机变量\n",
    "$$\n",
    "\\vec{X}^{(j)} = \\{X_1^{(j)}, \\cdots, X_m^{(j)}\\}, j = 1, \\cdots, n.\n",
    "$$\n",
    "也即，$X_i$的 PDF 均为 $U(0, 1)$。做相应修改后的算法就是 Monte Carlo 算法，简称MC，或者，也称作标准 Monte Carlo 采样（standard Monte Carlo sampling）："
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**算法：MC 体积估算**\n",
    "\n",
    "* 目标：估算 $\\lambda(\\mathscr{R})$。\n",
    "* 输入：包含在 $\\mathscr{J}^m$ 中的区域 $\\mathscr{R}$, 以及 $n$ 个计值点。\n",
    "* 输出：$\\bar{\\lambda}_n(\\mathscr{R})$，方差 $\\mathrm{var} \\bar{\\lambda}_n(\\mathscr{R})$ 以及置信区间。\n",
    "\n",
    "1. $j = 1$，$S = 0$；\n",
    "2. `While` $j \\leq n$：\n",
    "    * 生成$\\vec{X}^{(j)}$；\n",
    "    * $\\phi(\\vec{X}^{(j)}) = 0$；\n",
    "    * `If` $\\vec{C}^{(j)} \\in \\mathscr{R}，\\phi(\\vec{x}^{(j)}) = 1$；\n",
    "    * $S = S + \\phi(\\vec{x}^{(j)})$；\n",
    "    * j = j + 1；\n",
    "3. 计算 $\\bar{\\lambda}_n(\\mathscr{R}) = S/n$ 作为 $\\lambda(\\mathscr{R})$ 的点估计；\n",
    "4. 计算 $V[\\bar{\\lambda}_n(\\mathscr{R})] = (S / n)(1 - S / n) / (n - 1)$ 作为 $\\mathrm{var~} \\bar{\\lambda}_n(\\mathscr{R})$ 的点估计；\n",
    "5. 根据置信水平计算百分之 $100 \\times (1 - \\delta)$ 的置信区间。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "注意到 $\\vec{X}^{(1)}, \\cdots \\vec{X}^{(n)}$ 均为独立随机变量且 PDF 为\n",
    "$$\n",
    "\\begin{equation}\n",
    "  f(\\vec{x}) = \\left\\{\n",
    "  \\begin{array}{ll}\n",
    "    1, & 0 \\leq x_i \\leq 1, i = 1, \\cdots, m,\\\\\n",
    "    0, & \\mbox{其他}.\n",
    "  \\end{array}\n",
    "  \\right.\n",
    "\\end{equation}\n",
    "$$\n",
    "因此 $\\phi(\\vec{X}^{(1)}), \\cdots, \\phi(\\vec{X}^{(n)})$ 为独立的 Bernoulli 分布随机变量，满足\n",
    "$$\n",
    "\\begin{equation}\n",
    "  P\\{\\phi(\\vec{X}^{(j)}) = 1\\} = \\int_{\\mathscr{R}} f(\\vec{x}) dx =\n",
    "  \\lambda(\\mathscr{R})\n",
    "\\end{equation}\n",
    "$$\n",
    "且\n",
    "$$\n",
    "\\begin{equation}\n",
    "  P\\{\\phi(\\vec{X}^{(j)}) = 0\\} = \\int_{\\mathscr{J}^m \\backslash\n",
    "    \\mathscr{R}} f(\\vec{x}) dx = 1 - \\lambda(\\mathscr{R}), j = 1, \\cdots, n.\n",
    "\\end{equation}\n",
    "$$\n",
    "所以，$S = \\phi(\\vec{X}^{(1)}) + \\cdots + \\phi(\\vec{X}^{(n)})$ 服从二项分布\n",
    "$$\n",
    "\\begin{equation}\n",
    "  P\\{S = i\\} = f_i(n, \\lambda) = \\binom{n}{i} \\lambda^i (1 -\n",
    "  \\lambda)^{n - i}, \\lambda = \\lambda(\\mathscr{R}), i = 0, \\cdots, n.\n",
    "\\end{equation}\n",
    "$$\n",
    "二项分布的期望和方差分别是 $E[S] = n \\lambda$ 和 $\\mathrm{var~} S = n\\lambda(1 - \\lambda)$。于是 $\\bar{\\lambda}_n = \\bar{\\lambda}_n(\\mathscr{R})$ 可以看作是 $\\lambda$ 的一个无偏估计（偏差期望为零），且有\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\mathrm{var~} \\bar{\\lambda}_n = \\frac{1}{n^2} \\mathrm{var~} S =\n",
    "  \\lambda (1 - \\lambda) / n.\n",
    "\\end{equation}\n",
    "$$\n",
    "注意其实 $\\lambda$ 是未知量，因此我们并不能用此公式来估算误差。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 误差和样本大小\n",
    "\n",
    "对于一个标准数值算法，在提出之后，我们通常要给出其误差和收敛率。对Monte Carlo法而言，收敛指的是依概率 $1$ 收敛，也即\n",
    "$$\n",
    "\\begin{equation}\n",
    "  P\\left\\{\\lim_{n \\to \\infty} \\bar{\\lambda}_n = \\lambda \\right\\} = 1.\n",
    "\\end{equation}\n",
    "$$\n",
    "因此，所谓误差也是点估计或区间估计意义上的。比如算法 MC 中的 $V[\\bar{\\lambda}_n(\\mathscr{R})]$ 就是 $\\mathrm{var~} \\bar{\\lambda}_n$ 的一个无偏估计，因为\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\begin{array}{rcl}\n",
    "  E[(S / n) (1 - S / n)] &=&  \\displaystyle \\frac{1}{n} E[S] -\n",
    "  \\frac{1}{n^2}(\\mathrm{var~} S + E^2[S])\\\\\\\\\n",
    "  &=& \\displaystyle\\frac{\\lambda (1 - \\lambda) (n - 1)}{n}.\n",
    " \\end{array}\n",
    "\\end{equation}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "而 $\\sqrt{V[\\bar{\\lambda}_n]}$ 被称为 $\\bar{\\lambda}_n$ 的标准误差（standard error）。有时被用作 $\\bar{\\lambda}_n$ 的统计误差的一个粗略估计，不过由于 $V[\\bar{\\lambda}_n]$ 本身就是一个估计量，因此要慎重使用。\n",
    "\n",
    "在继续讨论之前，我们先回顾一个概率论中涉及到的重要不等式：\n",
    "\n",
    "**Chebshev不等式** 令 $Z$ 是一个累积分布为 $F(z)$ 的随机变量，$z \\in (-\\infty, \\infty)$。且 $E[Z] = 0$，\n",
    "$$\n",
    "\\sigma^2 = \\mathrm{var~} Z = E[Z^2] < \\infty.\n",
    "$$ \n",
    "则对 $\\beta > 0$，有\n",
    "$$\n",
    "  \\begin{equation}\n",
    "    P\\left\\{\\frac{|Z|}{\\sigma} \\geq \\beta\\right\\} \\leq \\frac{1}{\\beta^2}.\n",
    "  \\end{equation}\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**证明：** 对 $\\varepsilon > 0$，有\n",
    "$$\n",
    "  \\begin{equation}\n",
    "    \\begin{array}{rcl}\n",
    "    P\\{|Z| \\geq \\varepsilon\\} &=& \\displaystyle\n",
    "    \\int_{-\\infty}^{-\\varepsilon}d F(z) + \\int_{\\varepsilon}^{\\infty}d\n",
    "    F(z) \\\\\\\\ &\\leq& \\displaystyle\n",
    "    \\int_{-\\infty}^{-\\varepsilon}\\frac{z^2}{\\varepsilon^2} d F(z)\n",
    "    + \\int_{\\varepsilon}^{\\infty}\\frac{z^2}{\\varepsilon^2} d F(z)\\\\\\\\\n",
    "    &\\leq& \\displaystyle \\frac{1}{\\varepsilon^2}\\int_{-\\infty}^{\\infty}z^2 d F(z)\n",
    "    = \\frac{\\sigma^2}{\\varepsilon^2}.\n",
    "    \\end{array}\n",
    "  \\end{equation}\n",
    "$$\n",
    "取 $\\beta = \\varepsilon / \\sigma$ 即证。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现取 $Z = S / n - \\lambda$ 和 $\\sigma^2 = \\lambda(1 - \\lambda) / n$，得\n",
    "$$\n",
    "\\begin{equation}\n",
    "  P\\{|\\bar{\\lambda}_n - \\lambda| < \\varepsilon\\} \\geq 1 - \\lambda(1 - \\lambda) / n \\varepsilon^2.\n",
    "\\end{equation}\n",
    "$$\n",
    "即\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\lim_{n \\to \\infty} P\\{|\\bar{\\lambda}_n - \\lambda| \\geq \\varepsilon\\} = 0.\n",
    "\\end{equation}\n",
    "$$\n",
    "上式称为概率收敛（convergence in probability），由依概率 1 收敛可以导出概率收敛，但反过来不行。它比依概率1收敛（convergernce with probability 1，缩写w.p.1）要弱。但这里实际给出了一个收敛性和样本大小 $n$ 之间的关系。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "不过这里再大的 $n$ 都不能**确保**误差小于 $\\varepsilon$。为了正确的体现和评估随机性，我们需要引入置信水平（confidence level）$1 - \\delta$，$0 < \\delta < 1$，由 Chebyshev 不等式，当\n",
    "$$\n",
    "\\begin{equation}\n",
    "  n \\geq n_C(\\varepsilon, \\delta, \\lambda) = \\lceil \\lambda (1 -\n",
    "  \\lambda) / \\delta \\varepsilon^2 \\rceil\n",
    "\\end{equation}\n",
    "$$\n",
    "时，误差满足\n",
    "$$\n",
    "\\begin{equation}\n",
    "  P\\{|\\bar{\\lambda}_n - \\lambda| < \\varepsilon\\} \\geq 1 - \\delta.\n",
    "\\end{equation}\n",
    "$$\n",
    "我们称其为绝对误差准则（absolute error criterion）。注意到 $\\lambda(1 - \\lambda) \\leq 1 / 4$，故有最坏情形样本数（the worst-case sample size）\n",
    "$$\n",
    "\\begin{equation}\n",
    "  n_C(\\varepsilon, \\delta) = \\lceil \\frac{1}{4 \\delta \\varepsilon^2}\\rceil,\n",
    "\\end{equation}\n",
    "$$\n",
    "对所有 $\\lambda \\in [0, 1]$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上述公式表达了Monte Carlo法最重要的性质，$n_C(\\varepsilon, \\delta, \\lambda)$ 和维数 $m$ 无关。而在实际计算中，由于随机投点本身是一个 $O(m)$ 的操作，且在每个维度上我们要通过计算来判断 $\\vec{X}$ 是否属于 $\\mathscr{R}$，这些操作（是相加而不是相乘）加起来不超过 $O(m^\\beta)$，$\\beta \\geq 1$。故实际在程序中估算绝对误差界的代价是\n",
    "$$\n",
    "O([m^\\beta \\frac{\\lambda (1 - \\lambda)}{\\delta \\varepsilon^2}])\n",
    "= O(\\frac{m^\\beta}{4 \\delta \\varepsilon^2}).\n",
    "$$\n",
    "仍然是一个关于 $m$ 的多项式时间算法，而相应精确逼近算法关于 $m$ 是指数时间的。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "尽管上述公式给出了一个样本数的估计，但这个估计明显是过宽的。实际上的样本数需求要远小于这个估计。为此我们考虑根据中心极限定理，当 $n \\to \\infty$ 时，特征量\n",
    "$$\n",
    "\\frac{S - n \\lambda}{[n \\lambda (1 -\n",
    "  \\lambda)]^{\\frac{1}{2}}}\n",
    "$$\n",
    "是服从标准正态分布\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\Phi(z) = (2 \\pi)^{-\\frac{1}{2}}\\int_{-\\infty}^z e^{-\\frac{y^2}{2}} dy, -\\infty < z < \\infty,\n",
    "\\end{equation}\n",
    "$$\n",
    "也即 $N(0, 1)$ 分布。令\n",
    "$$\n",
    "\\begin{equation}\n",
    "  n_N(\\varepsilon, \\delta, \\lambda) = \\left\\lceil \\lambda (1 -\n",
    "  \\lambda) \\left[\\frac{\\Phi^{-1}(1 -\n",
    "      \\frac{\\delta}{2})}{\\varepsilon}\\right]^2\\right\\rceil,\n",
    "\\end{equation}\n",
    "$$\n",
    "其中\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\Phi^{-1}(\\theta) = \\inf\\left[z : (2 \\pi)^{-\\frac{1}{2}}\n",
    "    \\int_{-\\infty}^z e^{-\\frac{y^2}{2}} dy = \\theta, 0 < \\theta < 1\\right].\n",
    "\\end{equation}\n",
    "$$\n",
    "于是当 $\\varepsilon \\to 0$, 公式给出了在参数 $(\\varepsilon, \\delta)$ 下，绝对误差满足\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\lim_{\\varepsilon \\to 0} P\\left\\{\\frac{\\left|\\frac{S}{n_N(\\varepsilon,\n",
    "      \\delta, \\lambda)} - \\lambda\\right|}{\\varepsilon} \\leq 1\\right\\} = 1 - \\delta\n",
    "\\end{equation}\n",
    "$$\n",
    "的样本数。而对应的最坏情形样本数是\n",
    "$$\n",
    "\\begin{equation}\n",
    "  n_N(\\varepsilon, \\delta) = \\left\\lceil \\left[\\frac{\\Phi^{-1}(1 -\n",
    "      \\frac{\\delta}{2})}{2\\varepsilon}\\right]^2\\right\\rceil.\n",
    "\\end{equation}\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们下面计算一个圆面积，然后来笔记两种估计的区别："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def area_circle(times):\n",
    "    inside = 0\n",
    "    dots = np.random.rand(2, times)\n",
    "    for i in range(times):\n",
    "        x = dots[0, i] - 0.5\n",
    "        y = dots[1, i] - 0.5\n",
    "        if x * x + y * y < 0.25:\n",
    "            inside += 1\n",
    "    return inside / times"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果我们的 $n = 10000$，那么我们的误差会是多少？根据Chebshev不等式，我们可以计算\n",
    "$$\n",
    "n_C = \\frac{1}{4 \\delta \\varepsilon^2},\n",
    "$$\n",
    "我们令 $\\delta = 0.01$，也就是说绝对误差小于 $\\varepsilon$ 的概率要大于百分之99。此时，\n",
    "$$\n",
    "\\varepsilon = \\sqrt{\\frac{1}{4 n_C \\delta}} = \\sqrt{\\frac{1}{4 \\times 10000 \\times 0.01}} = \\frac{1}{20} = 0.05.\n",
    "$$\n",
    "我们实际计算一下误差的分布："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "T = 1000  \n",
    "n = 10000\n",
    "abs_err = np.zeros(T)\n",
    "for i in range(T):\n",
    "    abs_err[i] = (area_circle(n) - np.pi / 4)\n",
    "plt.hist(abs_err, bins=50, density=True, label=\"Stat. of the Sampling\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "实际计算远好于我们的估计，说明我们的估计太保守了。现在来看利用大数定理的估计：\n",
    "$$\n",
    "n_N = \\left[\\frac{\\Phi^{-1}(1 - \\frac{\\delta}{2})}{2 \\varepsilon}\\right]^2,\n",
    "$$\n",
    "同样令$\\delta = 0.01$，则\n",
    "$$\n",
    "\\varepsilon = \\frac{\\Phi^{-1}(0.995)}{\\sqrt{2 n_N}}.\n",
    "$$\n",
    "对正态分布的计算正常的方式是查表，但我们之前学过的一个对正态分布的反函数做有理逼近的算法么？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def inv_normal(y):\n",
    "    c0 = 2.515517\n",
    "    c1 = 0.802853\n",
    "    c2 = 0.010328\n",
    "    d1 = 1.432788\n",
    "    d2 = 0.189269\n",
    "    d3 = 0.001308\n",
    "    t = np.sqrt(-np.log((min(y, 1 - y))**2))\n",
    "    S1 = c0 + c1 * t + c2 * t**2\n",
    "    S2 = 1 + d1 * t + d2 * t**2 + d3 * t**3\n",
    "    S = t - S1 / S2\n",
    "    w = y - 0.5\n",
    "    if (w >= 0):\n",
    "        F = S\n",
    "    else:\n",
    "        F = -S\n",
    "    return F"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这是一个可以用的近似，比如我们做一个采样："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sample_Normal(U):\n",
    "    return [inv_normal(u) for u in U]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "U = np.random.rand(1000000)\n",
    "X = sample_Normal(U)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "看一下采样的效果："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.linspace(0,6,10000)\n",
    "f = 1/np.sqrt(np.pi * 2) * np.exp(-x**2/2)\n",
    "plt.hist(X, bins=200, density=True, label=\"Stat. of the Sampling\");\n",
    "plt.plot(x, f, label=r\"PDF\")\n",
    "plt.legend()\n",
    "plt.xlabel(r\"Statistical Test of Standard Samples by Approximation Inverse Transform Method\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后我们用这个近似来估计我们的误差："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "delta = 0.01\n",
    "eps = inv_normal(1 - delta/2) / np.sqrt(2 * n)\n",
    "print(eps)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "比 Chebyshev 的估计好的多了。 反过来，如果我们希望偏差在0.01（百分之一）以内的概率大于0.999，也即$\\delta = 0.001$，那么用后一个公式估计来计算，则至少需要样本数为："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "delta_fine = 0.001\n",
    "eps = 0.01\n",
    "2 * np.log(2 / delta_fine) / (4 * (eps)**2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于一些较难用数值方法计算的复杂的图形，比如：\n",
    "$$\n",
    "\\int_0^1\\sin(\\frac{1}{x}) dx,\n",
    "$$\n",
    "用 Monte Carlo 法计算其曲线下面积（实际就是积分），毫无困难。我们甚至不需要对程序的算法部分做任何修改。先画一下我们要求面积的部分："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.logspace(-100, 0, 100000)\n",
    "plt.plot(x, 0.5 * np.sin(1/x**2) + 0.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "除了目标函数不一样，其他部分和求圆面积完全一样。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def area_sin1_x(times):\n",
    "    inside = 0\n",
    "    dots = np.random.rand(2, times)\n",
    "    for i in range(times):\n",
    "        x = dots[0, i]# - 0.5 ???\n",
    "        y = dots[1, i]# - 0.5 ???\n",
    "        if y < 0.5 * np.sin(1/x) + 0.5:   # 只改了目标函数部分\n",
    "            inside += 1\n",
    "    return inside / times"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "暴力一下给个参考解。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "lambda_n = area_sin1_x(1000000)\n",
    "print(lambda_n)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可见MC方法对具体区域形状不敏感。这是它的另一个优势。误差统计也一样："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "T = 1000\n",
    "abs_err = np.zeros(T)\n",
    "for i in range(T):\n",
    "    abs_err[i] = (area_sin1_x(n) - lambda_n)\n",
    "plt.hist(abs_err, bins=50, density=True, label=\"Stat. of the Sampling\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最后说一下，第二种估计本质上要求 $n$ 不能太小，要至少大到中心极限定理起作用。因为我们实际上就把 $S / n$ 当作正态分布计算了，而这个只是一个概率极限情形。因此，当 $n$ 不够大（注意这里逻辑上有矛盾），或者 $\\varepsilon$ 太小时，这个结果都有很大的误差。一个弥补的办法是故意高估 $n$，比如有人建议总是取两倍的 $n_N$。而更加靠谱的估计，来自 Hoeffding 于 1963 年的工作，具体参见参考书。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 置信区间\n",
    "\n",
    "之前我们给出了面积的一个点估计 $\\bar{\\lambda}_n $，以及讨论在置信度 $\\delta$ 下的一个关于偏差 $\\varepsilon$ 的样本数量估计。似乎所有关于计算模拟的信息已经具备了，我们已经有\n",
    "$$\n",
    "P\\{|\\bar{\\lambda}_n - \\lambda| \\leq \\varepsilon\\} = 1 - \\delta.\n",
    "$$\n",
    "这个结果是精确的（概率意义上），也是通用的，但仍然是过于宽泛的。比如，这个估计和 $\\lambda$ 无关，无法体现出实际图形的意义。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为了了解 $\\lambda$ 本身的意义，我们做一个实验，当$\\lambda = 0.005$时，我们看一下实际上的模拟结果是如何分布的。为此我们还是调出之前编写的求圆面积的MC程序，反正MC方法对具体形状并不敏感。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def area_circle_small(times):\n",
    "    inside = 0\n",
    "    dots = np.random.rand(2, times)\n",
    "    for i in range(times):\n",
    "        x = dots[0, i] - 0.5\n",
    "        y = dots[1, i] - 0.5\n",
    "        if x * x + y * y < 0.005 / np.pi:\n",
    "            inside += 1\n",
    "    return inside"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们可以观察到频数$S$大大降低。这是正常的。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "n = 1000\n",
    "S = area_circle_small(1000)\n",
    "V = S / n * (1 - S / n) / (n - 1)\n",
    "print(S, V)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果我们做多次模拟并加以统计，我们能够得到实际频率的分布。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 这个程序会很慢！\n",
    "T = 50000  \n",
    "n = 1000\n",
    "abs_err = np.zeros(T)\n",
    "for i in range(T):\n",
    "    abs_err[i] = (area_circle_small(n) / n - 0.005)\n",
    "plt.hist(abs_err, bins=40, density=True, label=\"Stat. of the Sampling\");\n",
    "plt.legend()\n",
    "plt.xlabel(r\"Statistical Test of Frequency\")\n",
    "plt.savefig(\"bais_lambda_n.pdf\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上面的结果其实很好理解，因为 $\\lambda$ 本身就只有 $0.005$，因此负方向最多只能再偏 $0.005$，如果实际偏差会大于 $\\lambda$，那么在正方向和负方向就不会对称。事实上由于这种“边界”效应，除了$\\lambda = 0.5$ 以外，左右偏差都不会对称。我们考虑一下如果一个实际的 $\\lambda$ 比较接近$0$，那么在随机投点时，落入 $\\mathscr{R}$ 内的点数本身就相对有限，因此其频率 $\\bar{\\lambda}_n$ 往负方向**可能的**偏差就很有限。从实验中。我们也可以看到，实际的频率分布确实是往正方向偏移的。因为负方向根本没有偏移的空间了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以上这些观察提示我们，实际统计频率的分布和概率本身有关，同时也应该有一定的偏移。这就是区间估计的出发点。我们希望将频数 $S$ 也纳入统计估计，给出一个置信区间的上下界范围。也即寻找 $I_1 = I_1(S, n, \\delta)$ 和 $I_2 = I_2(S, n, \\delta)$，使得\n",
    "$$\n",
    "P\\{I_1, I_2, \\delta\\} = P\\{I_1 < \\lambda < I_2\\} \\geq 1 -\\delta.\n",
    "$$\n",
    "这里 $P\\{I_1, I_2, \\delta\\}$ 称为范围概率（coverage probability）或者可靠系数（confidence coefficent）。而区间 $[I_1, I_2]$ 称为置信区间（confidence interval）。置信区间是比给出一个单点估计 $\\bar{\\lambda}_n$ 更加可靠的统计估计。关于二项分布的区间估计的理论和方法很多。我们这里给\n",
    "出三种主要方法。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "记二项分布的累计分布函数为\n",
    "$$\n",
    "\\begin{equation}\n",
    "  F_i(n, \\mu) = \\sum_{j = 0}^i \\binom{n}{j} \\mu^j (1 - \\mu)^{n - j}, 0\n",
    "  < \\mu < 1, i = 0, 1, \\cdots, n.\n",
    "\\end{equation}\n",
    "$$\n",
    "其意义为在 $n$ 次测试中，如果单次实验的成功率为 $\\mu$，那么出现至多 $i$ 次成功的概率。下面为了理解二项分布的累计分布函数，我们先从定义出发绘制，所以我们需要调用组合函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 调这个包为了计算组合数\n",
    "from scipy.special import comb"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "比如计算 10000 取 4。精确计算组合数是一个指数时间算法，在实际计算机模拟中不能接受。这里只是作为教学演示。然后我们会讨论如何避免直接计算："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "comb(10000,4)   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "严格从定义出发构建二项分布的累积分布函数（无实用性）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def binomial_CDF(n, mu, i):\n",
    "    F = 0\n",
    "    for j in range(i + 1):\n",
    "        F += comb(n, j) * mu**j * (1 - mu)**(n - j)\n",
    "    return F"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " 现在我们可以计算在 1000 次成功率为 $\\mu$ 的投点中，成功次数**不足** 323 次的概率，注意这里变化的是成功率 $\\mu$。因为我们在实际模拟中，是不知道这个真解的，因此这里把它当作一个变化的量："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "mu = np.linspace(0, 1, 100)\n",
    "plt.plot(mu, binomial_CDF(1000, mu, 323))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这里可以看到，如果成功率 $\\mu$ 接近零，那么在 $1000$ 次试验中，实际发生次数小于 $323$ 的概率非常接近 $1$，这和我们的直观是一致的。上面是关于参数$\\mu$的变化，下面是固定$n = 100$，$\\mu = 0.5$的累计分布函数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = [i for i in range(100)]\n",
    "y = [binomial_CDF(100, 0.5, i) for i in range(100)]\n",
    "plt.plot(x, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "因此对 $0 < \\alpha_1 < \\alpha_2 <1$，存在唯一的 $\\theta_1(s, n, \\alpha_1)$ 和\n",
    "$\\theta_2(s, n, \\alpha_2)$ 分别满足\n",
    "$$\n",
    "\\begin{equation}\n",
    "  1 - F_{s - 1}(n, \\theta) = \\alpha_1\n",
    "\\end{equation}\n",
    "$$\n",
    "和\n",
    "$$\n",
    "\\begin{equation}\n",
    "  F_s(n, \\theta) = 1 - \\alpha_2.\n",
    "\\end{equation}\n",
    "$$\n",
    "特别地，对 $s = 1$，我们分别令 $\\theta_1 = 0$ 和 $\\theta_2 = 1$。注意到\n",
    "$F_s(n, \\theta)$ 关于 $\\theta$ 递减和关于 $s$ 递增，所以有\n",
    "$$\n",
    "0 \\leq \\theta_1(s, n, \\alpha_1) < \\theta_2(s, n, \\alpha_2) \\leq 1.\n",
    "$$\n",
    "因此，若对 $n$ 次独立的Bernolli试验，恰好成功 $S$ 次的概率是 $\\mu$，则对满足\n",
    "$$\n",
    "1 + \\alpha_1 - \\alpha_2 = \\delta\n",
    "$$\n",
    "的 $\\alpha_1$ 和 $\\alpha_2$，区间 $[\\theta_1(S, n, \\alpha_1),\n",
    "  \\theta_2(S, n, \\alpha_2)]$ 就是 $\\mu$ 关于置信水平 $1-\\delta$ 的范围区间，也即\n",
    "$$\n",
    "P\\{\\theta_1(S, n, \\alpha_1) < \\mu < \\theta_2(S, n, \\alpha_2)\\} \\geq 1 - \\delta.\n",
    "$$\n",
    "满足上面条件的 $\\alpha_1$ 和 $\\alpha_2$ 很多，我们这里采用的是 $\\alpha_1\n",
    "= \\frac{\\delta}{2}$ 和 $\\alpha_2 = 1 - \\frac{\\delta}{2}$. 也即我们最终取\n",
    "$$\n",
    "I_1(S, n, \\delta) = \\theta_1(S, n, \\frac{\\delta}{2}),\n",
    "I_2(S, n, \\delta) = \\theta_2(S, n, 1 - \\frac{\\delta}{2}).\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为了计算 $\\theta_1$ 和 $\\theta_2$，我们引入不完全Beta函数 :\n",
    "$$\n",
    "\\begin{equation}\n",
    "  1 - F_{j - 1}(n, \\theta) = H_\\theta(j, n - j + 1) = \\frac{1}{B(j, n\n",
    "    - j + 1)}\\int_0^\\theta z^{j - 1}(1 - z)^{n - j} dz, 0 \\leq \\theta \\leq 1.\n",
    "\\end{equation}\n",
    "$$\n",
    "其中 $B(\\cdot, \\cdot)$ 表示Beta函数。而 $H_\\theta(j, n - j + 1)$ 实际上就是参数为 $j$ 和 $n - j + 1$ 的 Beta 分布的累积分布函数。而所求\n",
    "$$\n",
    "\\theta_1(S, n, \\frac{\\delta}{2}), \\theta_2(S, n, 1 - \\frac{\\delta}{2})\n",
    "$$\n",
    "就分别是方程\n",
    "$$\n",
    "H_\\theta(S, n - S + 1) = \\frac{\\delta}{2},\n",
    "H_\\theta(S + 1, n - S) = 1 - \\frac{\\delta}{2}\n",
    "$$\n",
    "的根。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 调用不完全Beta函数betainc和Beta函数\n",
    "from scipy.special import betainc,beta"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对比一下可以看到，不完全Beta函数可以替代二项分布累积分布函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.linspace(0, 0.1, 100)\n",
    "plt.plot(x, 1-betainc(12, 1000-11+1, x))\n",
    "plt.plot(x, binomial_CDF(1000, x, 11), 'o')\n",
    "#plt.plot(x, (1-betainc(12,1000-12+1,x)-binomial_CDF(1000, x, 11)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在具体求根的时候，注意到 $H_\\theta$ 关于 $\\theta$ 的单调性，我们可以用二分法来求解。初始含根区间可以选为 $\\theta_a = 0$，$\\theta_b = 1$。如果要加速收敛，可以在误差达到一定精度后采用 Newton 迭代。这些方法是经典数值方法，这里不再详述，具体例子可参见代码。下表给了一些实际计算的结果做参考。其中，$n = 1000$，$1 - \\delta = 0.99$，\n",
    "$$\n",
    "\\begin{array}{rcl}\n",
    "     H_1 &=& H_\\theta(S, n - S + 1, \\theta_1),\\\\\n",
    "     H_2 &=& H_\\theta(S + 1, n - S, \\theta_2).\n",
    "\\end{array}\n",
    "$$\n",
    "$$\n",
    "\\begin{array}{|c|c|c|c|c|c|c|}\n",
    "  \\hline\n",
    "  S & \\bar{\\lambda}_n & \\theta_1 & \\theta_2&\n",
    "  H_1&H_2&\n",
    "  P\\{\\theta_1 < \\lambda < \\theta_2\\}\\\\\n",
    "  \\hline\n",
    "  11&0.0011&0.004334&0.02265& 0.005003&0.99501&0.990007\\\\\n",
    "  \\hline\n",
    "  323&0.3230&0.2853&0.3624& 0.005003& - & - \\\\\n",
    "  \\hline\n",
    "\\end{array}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在考虑如何求根，由于这个函数导数变化剧烈，但是单调，所以我们可以用二分法缩小含根区间。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def func(S, n, delta, z):\n",
    "    return betainc(S, n - S + 1, z) - delta / 2\n",
    "\n",
    "def bisection_root(S, n, delta, z1, z2, err, tol):\n",
    "    while (True):\n",
    "        f1 = func(S, n, delta, z1)\n",
    "        if np.abs(f1) < tol:\n",
    "            return z1\n",
    "        z = (z1 + z2) * 0.5\n",
    "        fz = func(S, n, delta, z)\n",
    "        if np.abs(fz) < tol:\n",
    "            return z\n",
    "        if fz * f1 < 0:\n",
    "            z2 = z\n",
    "        else:\n",
    "            z1 = z\n",
    "        z = (z1 + z2) * 0.5\n",
    "        if (np.abs(z1 - z2) < err):\n",
    "            return z"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "缩小到误差范围$1 \\times 10^{-3}$。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "S = 11\n",
    "n = 1000\n",
    "delta = 0.01\n",
    "z = bisection_root(S, n, delta, 0, 1, 1e-3, 1e-7)\n",
    "print(z)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后启动一个Newton迭代。这里我们认真写一个Newton迭代吧。首先注意到不完全Beta函数是一个变上限积分，因此它的导数就是积分核，也就是二项分布的质量分布函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def dfunc(S, n, delta, z):\n",
    "    return (z)**(S - 1)*(1 - z)**(n - S) / beta(S, n - S + 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def Newton(S, n, delta, theta, tol, MAX_IT):\n",
    "    theta0 = theta\n",
    "    err = np.abs(func(S, n, delta, theta0))\n",
    "    k = 0\n",
    "    while err > tol:\n",
    "        theta1 = theta0 - func(S, n, delta, theta0) / dfunc(S, n, delta, theta0)\n",
    "        theta0 = theta1\n",
    "        err = np.abs(func(S, n, delta, theta0))\n",
    "        k = k + 1\n",
    "        if k > MAX_IT:\n",
    "            print (\"Disconvergence!\")\n",
    "            break\n",
    "    return theta0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Newton(11, 1000, 0.01, 0.00439453125, 1e-15, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面我们对 $S = 323$，$n = 1000$，$\\delta = 0.01$ 利用上面的程序给出一个完整的区间估计。首先计算满足\n",
    "$$\n",
    "H_\\theta(S, n - S + 1) = \\frac{\\delta}{2}\n",
    "$$\n",
    "的 $\\theta$："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "S = 323\n",
    "n = 1000\n",
    "delta = 0.01\n",
    "z = bisection_root(S, n, delta, 0, 1, 1e-3, 1e-7)\n",
    "print(z)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "其实因为 MC 方法本身精度不会太高，这个估计就很好了，如果实在有必要，那么可以用 Newton 迭代继续加细："
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这是个神经病一样的估计。然后继续估计另一端，为此要重新定义一下func。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def func(S, n, delta, z):\n",
    "    return betainc(S + 1, n - S, z) - 1 + delta / 2\n",
    "def dfunc(S, n, delta, z):\n",
    "    return (z)**S*(1 - z)**(n - S - 1) / beta(S + 1, n - S)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "z = bisection_root(S, n, delta, 0, 1, 1e-3, 1e-7)\n",
    "print(z)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "其实只要把二分法的精度提高也行，比如误差界$5 \\times 10^{-5}$足以保证有4位有效数字："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "z = bisection_root(S, n, delta, 0, 1, 5e-5, 1e-7)\n",
    "print(z)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结论是：$\\lambda \\approx 0.323$，并且 $0.2856 < \\lambda < 0.3624$ 的概率大于 $99.9\\%$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第二种置信区间的求法可以总结成一个定理：令 $S$ 有期望 $n \\lambda$ 和方差 $n \\lambda(1 - \\lambda)$，定义\n",
    "$$\n",
    "  \\begin{equation}\n",
    "    \\omega_i(S, n, \\beta) = \\frac{S + \\frac{\\beta^2}{2} +\n",
    "      \\beta(-1)^i\\sqrt{\\frac{\\beta^2}{4} + \\frac{S(n - S)}{n}}}{n +\n",
    "      \\beta^2}\n",
    "  \\end{equation}\n",
    "$$\n",
    "其中 $\\beta > 0$，$n \\in \\mathbb{N}^+$，$0 \\leq S \\leq n$ 并且 $i = 1, 2$。则存在 $\\beta = \\beta(\\delta)$ 使得开区间 $(\\omega_1(S, n, \\beta),\n",
    "  \\omega_2(S, n, \\beta))$ 以大于等于 $1 - \\delta$ 的概率覆盖了 $\\lambda$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "概定理的证明依赖 Chebyshev 不等式（参见 Fishman1995, p29），我们知道，Chebyshev 不等式是过宽估计的，所以我们一般实际取\n",
    "$$\n",
    "\\beta = \\Phi^{-1}(1 - \\frac{\\delta}{2}), 0 < \\lambda < 1,\n",
    "$$\n",
    "然后令 $I_1(S, n, \\delta) = \\omega_1(S, n, \\beta)$ 和 $I_2(S, n,\n",
    "\\delta) = \\omega_2(S, n, \\beta)$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "不过基于正态分布的 $\\beta$ 估值，同样会导致在 $\\lambda$ 接近 $0$ 或 $1$ 时，置\n",
    "信区间覆盖不住 $\\lambda$。通过修正\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\bar{\\omega}_i(z, n, \\beta) = \\omega_i(z + 0.5 \\times (-1)^i, n,\n",
    "  \\beta), i = 1, 2.\n",
    "\\end{equation}\n",
    "$$\n",
    "一般在 $\\lambda < 0.3$ 或 $\\lambda > 0.7$，实际操作中，发现 $S$ 小于 $0.3n$\n",
    "或大于 $0.7n$ 时，可以考虑做此修正。具体理论分析参见 Blyth 1983。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第三种置信区间估计不再依赖具体的分布，它也可以总结成一个定理。首次发表人就是我们参考书的作者。\n",
    "\n",
    "**Fishman 1991** 令 $Z_1$，$\\cdots$，$Z_n$ 为独立随机变量，且 $\\mu = E[Z_i] \\in (0, 1)$，\n",
    "  $P\\{0 \\leq Z_i \\leq 1\\} = 1$，令\n",
    "$$\n",
    "  \\bar{Z} = \\frac{Z_1 + \\cdots + Z_n}{n},\n",
    "$$\n",
    "对 $0 \\leq z \\leq 1$ 和 $0 < \\delta < 1$，定义\n",
    "$$\n",
    "  \\begin{equation}\n",
    "    \\rho_1(z, n, \\delta) = \\left\\{ \\begin{array}{ll}\n",
    "      \\{t : 0 < t \\leq z \\leq 1, e^{n w(z - t, t)} = \\frac{\\delta}{2} \\}& z > 0\\\\\n",
    "      0 & z = 0.\n",
    "      \\end{array}\n",
    "      \\right.\n",
    "    \\end{equation}\n",
    "$$\n",
    "和\n",
    "$$\n",
    "    \\begin{equation}\n",
    "      \\rho_2(z, n, \\delta) = \\left\\{ \\begin{array}{ll}\n",
    "      \\{t : 0 < t \\leq z \\leq 1, e^{n w(t - z, 1 - t)} = \\frac{\\delta}{2} \\}& z < 1\\\\\n",
    "      0 & z = 1.\n",
    "      \\end{array}\n",
    "      \\right.\n",
    "      \\end{equation}\n",
    "$$\n",
    "其中\n",
    "$$\n",
    "  \\begin{equation}\n",
    "    w(\\varepsilon, \\mu) = (\\mu + \\varepsilon) \\log\n",
    "    \\left(\\frac{\\mu}{\\mu + \\varepsilon}\\right) + (1 - \\mu -\n",
    "    \\varepsilon) \\log\\left(\\frac{1 - \\mu}{1 - \\mu - \\varepsilon}\\right),\n",
    "  \\end{equation}\n",
    "$$\n",
    "则\n",
    "$$\n",
    "      P\\{\\rho_1(\\bar{Z}_n, n, \\delta) < \\mu < \\rho_2(\\bar{Z}_n, n, \\delta)\\} \\geq 1 - \\delta.\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "\\begin{array}{cccccccc}\n",
    " \\hline\n",
    " S & \\bar{\\lambda}_n & \\omega_1 & \\omega_2&\n",
    " \\bar{\\omega}_1&\\bar{\\omega}_2&\n",
    " \\rho_1&\\rho_2\\\\\n",
    " \\hline\n",
    " 11&0.0011&0.005163&0.02328&0.004844&0.02396&0.003421&0.02540\\\\\n",
    " \\hline\n",
    " 323&0.3230&0.2862&0.3622&0.2857&0.3627&0.2762&0.3723\\\\\n",
    " \\hline\n",
    "\\end{array}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 界的估计\n",
    "\n",
    "我们在这一节集中讨论一下一个在计算机模拟中常见的策略。如果存在 $\\mathscr{R}$ 的超矩形下界 $\\mathscr{R}_L$ 和上界 $\\mathscr{R}_U$（在二维可以想像成一个内接矩形和一个外接矩形），那么我们的随机投点范围可以缩小（或者说，相对避免 $\\lambda$ 接近 $0$ 或 $1$ 的不稳定情形），从而提高算法效率和稳定性。这里可令\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\mathscr{R}_{L} = \\{\\vec{x} \\in \\mathscr{J}^m : 0 \\leq \\alpha_{Li} \\leq x_i\n",
    "  \\leq \\beta_{Li} \\leq 1, 1 \\leq i \\leq m\\}\n",
    "\\end{equation}\n",
    "$$\n",
    "和\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\mathscr{R}_{U} = \\{\\vec{x} \\in \\mathscr{J}^m : 0 \\leq \\alpha_{Ui} \\leq x_i\n",
    "  \\leq \\beta_{Ui} \\leq 1, 1 \\leq i \\leq m\\}\n",
    "\\end{equation}\n",
    "$$\n",
    "并且，$\\forall \\vec{x} \\in \\mathscr{J}^m$，如果 $\\vec{x} \\in\n",
    "\\mathscr{R}_L$，则必有 $\\vec{x} \\in \\mathscr{R}$；如果 $\\vec{x} \\in\n",
    "\\mathscr{J}^m \\backslash \\mathscr{R}_U$，则必有$\\vec{x} \\notin\n",
    "\\mathscr{R}$. "
   ]
  },
  {
   "attachments": {
    "hyperrectangle.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![hyperrectangle.png](attachment:hyperrectangle.png)\n",
    "\n",
    "这是一个二维的例子。注意到 $\\mathscr{R}_L$ 和 $\\mathscr{R}_U$ 的体积分别为\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\lambda_L = \\prod_{i = 1}^m(\\beta_{Li} - \\alpha_{Li})\n",
    "\\end{equation}\n",
    "$$\n",
    "和\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\lambda_U = \\prod_{i = 1}^m(\\beta_{Ui} - \\alpha_{Ui})\n",
    "\\end{equation}\n",
    "$$\n",
    "这里如果可能，我们会尽可能通过调整 $\\mathscr{R}_L$ 和 $\\mathscr{R}_U$ 使得 $\\lambda_L$ 越大越好同时 $\\lambda_U$ 越小越好，然后我们可以通过缩小投点的分布范围获得更多的好处。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "令\n",
    "$$\n",
    "  \\begin{equation}\n",
    "    \\phi_L(\\vec{x}) = \\left\\{\n",
    "    \\begin{array}{ll}\n",
    "      1,& \\vec{x} \\in \\mathscr{R}_L\\\\\n",
    "      0,& \\mbox{其他}.\n",
    "      \\end{array}\n",
    "      \\right.\n",
    "  \\end{equation}\n",
    "$$\n",
    "和\n",
    "$$\n",
    "  \\begin{equation}\n",
    "  \\phi_U(\\vec{x}) = \\left\\{\n",
    "  \\begin{array}{ll}\n",
    "    1,& \\vec{x} \\in \\mathscr{R}_U\\\\\n",
    "    0,& \\mbox{其他}.\n",
    "    \\end{array}\n",
    "    \\right.\n",
    "  \\end{equation}\n",
    "$$\n",
    "若 $f(\\vec{x})$ 表示在 $\\mathscr{J}^m$ 均匀分布的概率密度函数，令 $\\vec{X}$ 服从的概率密度函数为：\n",
    "$$\n",
    "  \\begin{equation}\n",
    "    f(\\vec{x}, \\lambda_L, \\lambda_U) = \\frac{\\phi_U(\\vec{x}) -\n",
    "      \\phi_L(\\vec{x})}{\\lambda_U - \\lambda_L}f(\\vec{x}), \\vec{x} \\in\n",
    "    \\mathscr{J}^m.\n",
    "  \\end{equation}\n",
    "$$\n",
    "则\n",
    "$$\n",
    "  \\begin{equation}\n",
    "    Z = \\lambda_L + (\\lambda_U - \\lambda_L) \\phi(\\vec{X}),\n",
    "  \\end{equation}\n",
    "$$\n",
    "满足\n",
    "1. \n",
    "$$\n",
    "E[Z] = \\lambda.\n",
    "$$\n",
    "2. \n",
    "$$\n",
    "    \\begin{eqnarray}\n",
    "      \\mathrm{var} Z & = & (\\lambda - \\lambda_L)(\\lambda_U - \\lambda)\n",
    "      \\label{eq::hyper_var}\n",
    "      \\\\\n",
    "      & \\leq & \\frac{(\\lambda_U - \\lambda_L)^2}{4}. \\notag\n",
    "    \\end{eqnarray}\n",
    "$$\n",
    "其中 $\\phi(\\vec{x})$ 的取值为\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\phi(\\vec{x}) = \\left\\{\n",
    "  \\begin{array}{ll}\n",
    "    1,& \\vec{x} \\in \\mathscr{R}\\\\\n",
    "    0,& \\mbox{其他}.\n",
    "  \\end{array}\n",
    "  \\right.\n",
    "\\end{equation}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下去的问题如何产生服从 $f(\\vec{x}, \\lambda_L,\\lambda_U)$ 的随机数？办法基本上有两种，一种是仍然产生在整个 $\\mathscr{J}^m$ 均匀分布的点，但是用拒绝接受（AR）策略来过滤出落在 $\\mathscr{R}_L$ 和 $\\mathscr{R}_U$ 之间的点。下面的模拟以 2 维为例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "au1 = 0.2\n",
    "bu1 = 0.8\n",
    "al1 = 0.4\n",
    "bl1 = 0.65\n",
    "au2 = 0.1\n",
    "bu2 = 0.9\n",
    "al2 = 0.3\n",
    "bl2 = 0.7\n",
    "plt.plot([0,1,1,0,0],[0,0,1,1,0])\n",
    "plt.plot([au1,bu1,bu1,au1,au1],[au2,au2,bu2,bu2,au2])\n",
    "plt.plot([al1,bl1,bl1,al1,al1],[al2,al2,bl2,bl2,al2])\n",
    "#plt.xlim(0.0, 1.0)\n",
    "#plt.ylim(0.0, 1.0)\n",
    "#plt.axis(\"equal\")\n",
    "axs = plt.gca()\n",
    "axs.set_aspect('equal', 'box')\n",
    "n = 1000\n",
    "k = 0\n",
    "T = 0\n",
    "while (k < n):\n",
    "    X0 = np.random.rand()\n",
    "    Y0 = np.random.rand()\n",
    "    if ((X0 > au1 and X0 < bu1) and (Y0 > au2 and Y0 < bu2)):\n",
    "        if ((X0 < al1 or X0 > bl1) or (Y0 < al2 or Y0 > bl2)):\n",
    "            plt.plot(X0, Y0, 'b.')\n",
    "            k = k + 1\n",
    "    T = T + 1\n",
    "print(T)\n",
    "Lu = (bu1 - au1) * (bu2 - au2)\n",
    "Ll = (bl1 - al1) * (bl2 - al2)\n",
    "print(1 / (Lu - Ll))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们可以看到抽取效率比的期望为 2.63，也就是每随机投点 2.63 次才能产生一个满足要求的投点。效率堪忧。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第二种是考虑整个 $\\mathscr{R}_U \\backslash \\mathscr{R}_L$ 区域被 $\\alpha_{Li}$，$\\alpha_{Ui}$，$\\beta_{Li}$ 和 $\\beta_{Ui}$ 分成了 $m$ 个区域，每个区域由两个小超矩形块组成。我们可以先从这些块中，按体积为概率选择一个，再在上面均匀投点，这样投点的**计算量仍然是 $\\Theta(m)$ 的**。这两种策略的具体实现都参见参考书2.5节。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**算法 - $m$维超矩形上下界约束下的直接抽取：**\n",
    "* 目标：对 $\\mathscr{R}_L \\subseteq \\mathscr{R}_U \\subseteq \\mathscr{J}^m$, 直接抽取一个在 $\\mathscr{R}_U \\backslash \\mathscr{R}_L$ 中均匀分布的随机向量 $\\vec{X}$。\n",
    "* 输入：包含在 $\\mathscr{J}^m$ 中的超矩形区域 $\\mathscr{R}_L$ 和 $\\mathscr{R}_U$ 的顶点坐标数据 $\\alpha_{Lj}, \\beta_{Lj}, \\alpha_{Uj}, \\beta_{Uj}$, 且 $\\mathscr{R}_L \\subseteq \\mathscr{R}_U$, $j = 1, 2, \\cdots, m$.\n",
    "\n",
    "1. 计算分块的体积（测度）$s_j$, $j = 1, 2, \\cdots, m$, 并由此产生落入各分块的累计分布函数 $t_j=\\sum_{i=1}^j s_i$, $j = 1, 2, \\cdots, m$； \n",
    "2. 产生一个服从 $U(0, 1)$ 的随机数 $Z$, 根据 $Z$ 具体位置产生实际抽样分块 $J \\in \\{1, 2, \\cdots, m\\}$, $t_{J-1} \\leq Z < t_J$, $t_0 = 0$；\n",
    "3. 计算 $\\Delta_1 = \\beta_{UJ} - \\beta_{LJ}$, $\\Delta_2 = \\alpha_{LJ} - \\alpha_{UJ}$；\n",
    "4. $j = 1$；\n",
    "5. `while` $j < J$:\n",
    "      1. 产生服从$U(\\alpha_{Lj}, \\beta_{Lj})$的随机数$X_j$;\n",
    "      2. $j = j + 1$。\n",
    "6. 产生服从 $U(0, 1)$ 的随机数 $Y$,\n",
    "$$\n",
    "  X_J = \\beta_{LJ} + \\left\\lfloor \\Delta_2 / (\\Delta_1 + \\Delta_2) + Y \\right\\rfloor\n",
    "  (\\alpha_{UJ} - \\beta_{UJ}) + Y(\\Delta_1 + \\Delta_2).\n",
    "$$\n",
    "7. $j = j + 1$；\n",
    "8. `while` $j \\leq m$：\n",
    "      1. 产生服从 $U(\\alpha_{Uj}, \\beta_{Uj})$ 的随机数 $X_j$；\n",
    "      2. $j = j + 1$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这里，$s_j$ 的生成方式如下：令 $a_i = \\beta_{Li} - \\alpha_{Li}$，$b_i = \\beta_{Ui} - \\alpha_{Ui}$，$1 \\leq i \\leq m$,\n",
    "$$\n",
    "\\begin{equation}\n",
    "  s_j = \\left\\{\n",
    "  \\begin{array}{ll}\n",
    "    \\displaystyle (b_1 - a_1)\\left(\\prod_{i = 2}^m b_i\\right) \\cdot \\frac{1}\n",
    "    {\\lambda_U - \\lambda_L}, & j = 1\\\\\\\\\n",
    "    \\displaystyle \\left(\\prod_{i = 1}^{j - 1} a_i\\right)(b_j - a_j)\n",
    "    \\left(\\prod_{i = j + 1}^m b_i\\right) \\cdot \\frac{1}{\\lambda_U - \\lambda_L}, &\n",
    "    1 < j < m.\\\\\\\\\n",
    "    \\displaystyle (b_m - a_m)\\left(\\prod_{i = 1}^{m - 1}a_i\\right) \\cdot \\frac{1}{\\lambda_U - \\lambda_L}, & j = m.\n",
    "  \\end{array}\n",
    "  \\right.\n",
    "\\end{equation}\n",
    "$$\n",
    "其中\n",
    "$$\n",
    "\\lambda_L = \\prod_{i = 1}^m a_i, \\lambda_U = \\prod_{i = 1}^m b_i.\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在一个具体的维度上，为了避免投影区域分块（导致抽取区域随维数呈指数增长），关键是在一次抽取中，直接抽出一个间断的区间。比如：若有 $O = [au, al]\\cup[bl, bu]$，且 $au \\leq al \\leq bl \\leq bu$，能否只用常数次操作（和 $m$ 和分块数无关）抽取出在 $O$ 上均匀分布的随机数？其实思路很简单，只要按两个区间的长度比例来分配一个 $U(0, 1)$ 的随机变量即可："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in range(1000):\n",
    "    au = 0.1\n",
    "    al = 0.3\n",
    "    bl = 0.7\n",
    "    bu = 0.9\n",
    "    a = al - au   # 第一个区间长度\n",
    "    b = bu - bl   # 第二个区间长度\n",
    "    Y = np.random.rand() * (a + b)   \n",
    "    # 随机变量均匀分布在（a+b）的长度上\n",
    "    if Y < a:   # <a则放在第一区间\n",
    "        X = al + Y\n",
    "    else:       # 否则分配给第二区间\n",
    "        X = bl + Y - a\n",
    "    plt.plot(i, X, '.b')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以上每产生一个样本，只做了一次 $U(0, 1)$ 的均匀抽取，加上一次判断和一次线性计算。这个思路可以推广到 $m$ 维，就是参考书 50 页 version C。下面举一个 2 维的例子。参数和区域定义如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "au1 = 0.2\n",
    "bu1 = 0.8\n",
    "al1 = 0.4\n",
    "bl1 = 0.65\n",
    "au2 = 0.1\n",
    "bu2 = 0.9\n",
    "al2 = 0.3\n",
    "bl2 = 0.7\n",
    "plt.plot([0,1,1,0,0],[0,0,1,1,0])\n",
    "plt.plot([au1,bu1,bu1,au1,au1],[au2,au2,bu2,bu2,au2])\n",
    "plt.plot([al1,bl1,bl1,al1,al1],[al2,al2,bl2,bl2,al2])\n",
    "#plt.xlim(0.0, 1.0)\n",
    "#plt.ylim(0.0, 1.0)\n",
    "#plt.axis(\"equal\")\n",
    "axs = plt.gca()\n",
    "axs.set_aspect('equal', 'box')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在我们首先计算每个分块的密度，进而计算进入每个分块的累积分布。注意，这里一个分块其实是两个分离的矩形块组成，但它们上面均匀随机变量可以在一次抽取中得到。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "a1 = al1 - au1\n",
    "b1 = bu1 - bl1\n",
    "a2 = al2 - au2\n",
    "b2 = bu2 - bl2\n",
    "f1 = (a2 + b2) * (bu1 - au1)\n",
    "f2 = (a1 + b1) * (bl2 - al2)\n",
    "F1 = f1 / (f1 + f2) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用一次独立的随机抽取，决定进入哪个分块。注意 1 维时，只有一个分块；2 维时，有两个；3 维时有三个；$m$ 维时，只有 $m$ 个需要独立抽取的分块，是关于维数的线性增长而不是指数增长。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def pick_area():\n",
    "    Z = np.random.rand()\n",
    "    if Z < F1:\n",
    "        return 0\n",
    "    else:\n",
    "        return 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我这里单独给两个分块写了抽取过程。以使算法思路更清晰。事实上，对 $m$ 维的 $m$ 个分块，可以用一个类似的结构一般性解决。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sample_A0():\n",
    "    Z1 = np.random.rand() * (bu1 - au1) + au1\n",
    "    Z2 = np.random.rand() * (a2 + b2) + au2\n",
    "    if Z2 >= al2:\n",
    "        Z2 = Z2 + bl2 - al2\n",
    "    return (Z1, Z2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sample_A1():\n",
    "    Z1 = np.random.rand() * (a1 + b1) + au1\n",
    "    Z2 = np.random.rand() * (bl2 - al2) + al2\n",
    "    if Z1 >= al1:\n",
    "        Z1 = Z1 + bl1 - al1\n",
    "    return (Z1, Z2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot([0,1,1,0,0],[0,0,1,1,0])\n",
    "plt.plot([au1,bu1,bu1,au1,au1],[au2,au2,bu2,bu2,au2])\n",
    "plt.plot([al1,bl1,bl1,al1,al1],[al2,al2,bl2,bl2,al2])\n",
    "\n",
    "axs = plt.gca()\n",
    "axs.set_aspect('equal', 'box')\n",
    "n = 1000\n",
    "for i in range(n):\n",
    "    I = pick_area()\n",
    "    if (I == 0):\n",
    "        X0, Y0 = sample_A0()\n",
    "        plt.plot(X0, Y0, 'b.')\n",
    "    if (I == 1):\n",
    "        X0, Y0 = sample_A1()\n",
    "        plt.plot(X0, Y0, 'b.')        \n",
    "        plt.plot(X0, Y0, 'b.')                "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于 $m$ 维问题，在每一个分块，需要做 $m$ 次独立抽取，加 $m$ 次判断和线性计算。总计算时间仍然是 $O(m)$ 的。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**算法 - 在上下界估计下的 MC 方法：**\n",
    "* 目标：估算 $\\lambda(\\mathscr{R})$；\n",
    "* 输入：包含在 $\\mathscr{J}^m$ 中的区域 $\\mathscr{R}$, $\\lambda(\\mathscr{R})$ 的下界估计$\\lambda_L$ 和上界估计 $\\lambda_U$, 样本尺寸 $n$, 置信水平 $1 - \\delta$；\n",
    "* 输出：无偏点估计 $\\bar{\\lambda}_n(\\mathscr{R})$, 方差 $\\mathrm{var}\n",
    "  \\bar{\\lambda}_n(\\mathscr{R})$ 以及置信区间。\n",
    "\n",
    "1. $j = 1$, $S = 0$；\n",
    "2. `while` $j \\leq n$：\n",
    "    1. 生成 $\\vec{X}^{(j)}$ 服从概率密度函数 $f(\\vec{x}, \\lambda_L, \\lambda_U)$；\n",
    "    2. $\\phi(\\vec{X}^{(j)}) = 0$；\n",
    "    3. `if` $\\vec{X}^{(j)} \\in \\mathscr{R}, \\phi(\\vec{X}^{(j)}) = 1$；\n",
    "    4. $S = S + \\phi(\\vec{X}^{(j)})$；\n",
    "    5. $j = j + 1$。\n",
    "3. 做统计分析:\n",
    "    1. 计算 $\\bar{\\lambda}_n(\\mathscr{R}) = \\lambda_L + (\\lambda_U - \\lambda_L)S/n$ 作为 $\\lambda(\\mathscr{R})$ 的点估计；\n",
    "    2. 计算 $V[\\bar{\\lambda}_n(\\mathscr{R})] = (\\lambda_U - \\lambda_L)^2(S / n)(1 - S / n) / (n - 1)$ 作为 $\\mathrm{var~} \\bar{\\lambda}_n(\\mathscr{R})$ 的点估计；\n",
    "    3. 根据置信水平计算百分之 $100 \\times (1 - \\delta)$ 的置信区间：\n",
    "    $$\n",
    "    I_i(S, n, \\delta) = \\lambda_L + (\\lambda_U - \\lambda_L)\\tilde{I_i},\n",
    "    i = 1, 2.\n",
    "    $$\n",
    "    这里 $\\tilde{I_i}$ 是原 MC 中对应的置信区间界."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 网络可靠性\n",
    "\n",
    "接下去我们讨论一个 MC 方法的应用例子。首先我们需要一点点图论的知识。令 $G$ 表示一个无向网络（undirected network），它的顶点（nodes）编号的集合是 $\\mathscr{V}$，而全部边（edges）编号的集合是\n",
    "$$\n",
    "\\mathscr{E} = \\{1, 2, \\cdots, m\\}.\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们现在考虑这个由顶点和边组成的网络，假设全部的顶点都是可靠的，但边的可靠性却是一个独立的随机事件。也即 $\\forall i \\in \\mathscr{E}$，这条边连通的概率是 $q_i$，而有 $1 - q_i$ 的概率是不连通的。现在用随机变量 $y_i$ 表示一条边是否连通的状态，也即\n",
    "$$\n",
    "y_i = \\left\\{\n",
    "\\begin{array}{ll}\n",
    "  1, & \\mbox{边 $i$ 是连通的};\\\\\n",
    "  0, & \\mbox{其它}.\n",
    "\\end{array}\n",
    "\\right.\n",
    "$$\n",
    "则 $\\vec{y} = (y_1, y_2, \\cdots, y_m)$ 表示整个网络 $m$ 条边的状态。用 $\\mathscr{Y}$ 表示全部 $\\vec{y}$ 可能状态的集合。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\\forall s, t \\in \\mathscr{V}$，令\n",
    "$$\n",
    "\\phi(\\vec{y}) = \\left\\{\n",
    "\\begin{array}{ll}\n",
    "  1, & \\mbox{若 $s$ 和 $t$ 在 $\\vec{y}$ 状态下是连通的}.\\\\\n",
    "  0, & \\mbox{其它}.\n",
    "\\end{array}\n",
    "\\right.\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "再令\n",
    "$$\n",
    "P(\\vec{y}, \\vec{q}) = \\prod_{i \\in \\mathscr{E}} q_i^{y_i}(1 - q_i)^{1 - y_i},\n",
    "$$\n",
    "其中\n",
    "$$\n",
    "\\vec{q} = (q_1, \\cdots, q_m),\n",
    "$$\n",
    "则我们关心的是 $s$ 和 $t$ 之间连通的概率，也即\n",
    "$$\n",
    "\\begin{equation}\n",
    "  g(\\vec{q}) = \\sum_{\\vec{y} \\in \\mathscr{Y}} \\phi(\\vec{y}) P(\\vec{y}, \\vec{q}).\n",
    "\\end{equation}\n",
    "$$\n",
    "如果 $\\vec{q}$ 是已知的，那么 $g(\\vec{q})$ 是可计算的（computable）。它应该就严格等于\n",
    "$$\n",
    "\\begin{equation}\n",
    "  g(\\vec{q}) = \\sum_{\\vec{y} \\in \\mathscr{Y}_1} P(\\vec{y}, \\vec{q}),\n",
    "\\end{equation}\n",
    "$$\n",
    "其中\n",
    "$$\n",
    "\\mathscr{Y}_1 = \\{\\vec{y} \\in \\mathscr{Y} \\left| \\phi(\\vec{y}) = 1\\right.\\}.\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然而，如何确定 $\\mathscr{Y}_1$ 是一个 NP-Hard 的问题。在这种情况下，MC 方法也成为一个进行计算模拟\n",
    "的有效手段。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用 $\\Gamma$ 表示网络 $G$ 中点 $s-t$ 的最小切割集（minimal $s-t$ cutsets）全体。一个 $s-t$ 的切割集是一些边的集合，在 $G$ 中去除这些边，就会使 $s-t$ 不再连通。而最小切割集则表示该集合的任何子集都不会切割 $s-t$。于是\n",
    "$$\n",
    "\\begin{array}{rcl}\n",
    "\\displaystyle \\phi(\\vec{y}) &=& \\displaystyle \\prod_{\\mathscr{C} \\in\n",
    "  \\Gamma} \\left[1 - \\prod_{i \\in \\mathscr{C}}(1 - y_i)\\right] \\\\\\\\ & =\n",
    "& \\displaystyle \\prod_{\\mathscr{C} \\in \\Gamma}\\left[1 - \\min_{i \\in\n",
    "    \\mathscr{C}}(1 - y_i)\\right].\n",
    "\\end{array}\n",
    "$$\n",
    "令 $x_i \\in [0, 1]$，$i \\in \\mathscr{E}$，则可取\n",
    "$$\n",
    "y_i = 1 - \\lfloor 1 - q_i + x_i \\rfloor.\n",
    "$$\n",
    "于是 $s-t$ 网络可靠性等价于计算区域\n",
    "$$\n",
    "\\mathscr{R} = \\left\\{(x_1, \\cdots, x_m) \\in \\mathscr{J}^m\n",
    "\\left| \\min_{\\mathscr{C} \\in \\Gamma} \\left[1\n",
    "  - \\min_{i \\in \\mathscr{C}}(\\lfloor1 - q_i + x_i\\rfloor)\\right] = 1\\right.\\right\\}.\n",
    "$$\n",
    "的面积。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们可以用MC方法求解这个面积。同样地，为了提高采样精度，我们可以来考虑 $\\lambda_L$ 和 $\\lambda_U$。也就是 $\\mathscr{R}$ 的上下界估计，同时这种估计还要能够满足简单采样的要求。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们用 $\\mathscr{P}_1, \\mathscr{P}_2, \\cdots, \\mathscr{P}_I$ 表示网络 $G$ 的全部 $I$ 个 $s-t$ 不相交最短路径集（edge-disjoint paths），即 $\\forall i \\in \\{1, 2, \\cdots, I\\}$，$\\mathscr{P}_i$ 中的边构成 $s$ 到 $t$ 在 $G$ 中的最短路径，且 $\\mathscr{P}_i \\cap \\mathscr{P}_j = \\emptyset$，$\\forall i \\neq j$。类似地，记 $\\mathscr{C}_1, \\mathscr{C}_2, \\cdots, \\mathscr{C}_J$ 为 $J$ 个 $G$ 中的 $s-t$ 不相交最小切割集（edge-disjoint minimal $s-t$ cutsets）。令\n",
    "$$\n",
    "\\phi_L(\\vec{y}) = \\left\\{\n",
    "\\begin{array}{ll}\n",
    "  1, & \\mbox{若 $\\vec{y}$ 在至少在一个不相交最短路径集上全部连通},\\\\\n",
    "  0, & \\mbox{其他}.\n",
    "\\end{array}\n",
    "\\right.\n",
    "$$\n",
    "（若 $\\phi_L(\\vec{y}) = 1$ 则 $s-t$ 必然连通。）类似地，令\n",
    "$$\n",
    "\\phi_U(\\vec{y}) = \\left\\{\n",
    "\\begin{array}{ll}\n",
    "  1, & \\mbox{若 $\\vec{y}$ 在每个不相交最小切割集中都至少有一条边连通},\\\\\n",
    "  0, & \\mbox{其他}.\n",
    "\\end{array}\n",
    "\\right.\n",
    "$$\n",
    "（若 $\\phi_U(\\vec{y}) = 0$ 则说明至少有一个不相交最小切割集完成了切割，因此 $s-t$ 必然分离。）等价地，\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\begin{array}{rcl}\n",
    "\\phi_L(\\vec{y}) &=& \\displaystyle 1 - \\prod_{j = 1}^I\\left(1 - \\prod_{i \\in\n",
    "  \\mathscr{P}_j} y_i\\right), \\\\\n",
    "\\phi_U(\\vec{y}) &=& \\displaystyle \\prod_{j = 1}^J\\left(1 - \\prod_{i \\in\n",
    "  \\mathscr{C}_j} (1 - y_i)\\right).\n",
    "  \\end{array}\n",
    "\\end{equation}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "注意到必然有 $\\phi_L(\\vec{y}) \\leq \\phi(\\vec{y}) \\leq \\phi_U(\\vec{y})$，于是可构建\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\begin{array}{rcl}\n",
    "  g_L(\\vec{q}) &=&\\displaystyle \\sum_{\\vec{y} \\in \\mathscr{Y}}\n",
    "  \\phi_L(\\vec{y}) P(\\vec{y}, \\vec{q}),\\\\ &=&\\displaystyle 1 - \\prod_{j\n",
    "    = 1}^I\\left(1 - \\prod_{i \\in \\mathscr{P}_j}q_i\\right)\n",
    "  \\end{array}\n",
    "\\end{equation}\n",
    "$$\n",
    "和\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\begin{array}{rcl}\n",
    "  g_U(\\vec{q}) &=&\\displaystyle \\sum_{\\vec{y} \\in \\mathscr{Y}}\n",
    "  \\phi_U(\\vec{y}) P(\\vec{y}, \\vec{q}),\\\\ &=&\\displaystyle\n",
    "  \\prod_{j = 1}^J\\left(1 - \\prod_{i \\in \\mathscr{C}_j}(1 - q_i)\\right)\n",
    "  \\end{array}\n",
    "\\end{equation}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "作为 MC 方法估算 $g(\\vec{q})$ 的上下界。这个估算是重要的，因为显然，满足 $\\phi_U(\\vec{y}) = 1$ 的 $\\vec{y}$ 要比 $\\vec{y}$ 的全部$2^m$种组合少得多。\n",
    "因此这种界的约束可以极大地降低模拟结果的方差。类似求面积，我们可以构建概率密度函数\n",
    "$$\n",
    "\\begin{equation}\n",
    "  P(\\vec{y}, \\vec{q}, \\lambda_L, \\lambda_U) = \\frac{\\phi_U(\\vec{y}) -\n",
    "    \\phi_L(\\vec{y})}{g_U(\\vec{q}) - g_L(\\vec{q})}P(\\vec{y}, \\vec{q}), \\vec{y}\n",
    "  \\in \\mathscr{Y}.\n",
    "\\end{equation}\n",
    "$$\n",
    "若随机向量 $\\vec{Y}$ 服从 $P(\\vec{y}, \\vec{q}, \\lambda_L, \\lambda_U)$，则\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\psi(\\vec{Y}) = g_L(\\vec{q}) + (g_U(\\vec{q}) - g_L(\\vec{q})) \\phi(\\vec{Y})\n",
    "\\end{equation}\n",
    "$$\n",
    "的期望是 $g(\\vec{q})$ 且\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\begin{array}{rcl}\n",
    "  \\mathrm{var} \\phi(\\vec{Y}) &=& (g_U(\\vec{q}) - g(\\vec{q}))\n",
    "  (g(\\vec{q}) - g_L(\\vec{q}))\\\\\n",
    "  & \\leq& \\displaystyle \\frac{(g_U(\\vec{q}) - g_L(\\vec{q}))^2}{4}.\n",
    "  \\end{array}\n",
    "\\end{equation}\n",
    "$$\n",
    "现在总结一下 MC 模拟网络可靠性的算法："
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**算法 - 估算 $s-t$ 网络可靠性 $g(\\vec{q})$：**\n",
    "* 目标：估算 $g(\\vec{q})$。\n",
    "* 输入：网络 $G = (\\mathscr{V}, \\mathscr{E})$，起点 $s$，终点 $t$，网络可靠性向量 $\\vec{q}$，置信水平 $1-\\delta$。\n",
    "* 输出：$g(\\vec{q})$ 的无偏点估计 $\\hat{g}_n(\\vec{q})$，$\\mathrm{var} ~ \\hat{g}_n(\\vec{q})$，以及关于 $\\delta$ 的置信区间。\n",
    "\n",
    "1. 计算 $g_L(\\vec{q})$ 和 $g_U(\\vec{q})$；\n",
    "2. $j = 1$，$S = 0$；\n",
    "3. `while` $j \\leq n$：\n",
    "      1. 生成 $\\vec{Y} = (Y_1, \\cdots, Y_m)$ 服从概率密度函数 $P(\\vec{y}, \\vec{q}, \\lambda_L, \\lambda_U)$；\n",
    "      2. $\\phi(\\vec{Y}) = 0$；\n",
    "      3. `if` $s$ 和 $t$ 连通，$\\phi(\\vec{Y}) = 1$；\n",
    "      4. $S = S + \\phi(\\vec{Y})$；\n",
    "      5. $j = j + 1$。\n",
    "4. 做统计分析:\n",
    "      1. 计算 $\\hat{g}_n(\\vec{q}) = g_L(\\vec{q}) + [g_U(\\vec{q}) - g_L(\\vec{q})] S/n$ 作为 $g(\\vec{q})$ 的点估计；\n",
    "      2. 计算$V[\\hat{g}_n(\\vec{q})] = (g_U(\\vec{q}) - \\hat{g}_n(\\vec{q}))(\\hat{g}_n(\\vec{q}) - g_L(\\vec{q})) / (n -1)$ 作为 $\\mathrm{var} \\hat{g}_n(\\vec{q})$ 的点估计；\n",
    "      3. 根据置信水平计算百分之 $100 \\times (1 - \\delta)$ 的置信区间：\n",
    "    $$\n",
    "    I_i(S, n, \\delta) = g_L(\\vec{q}) + (g_U(\\vec{q}) - g_L(\\vec{q}))\\tilde{I_i},\n",
    "    i = 1, 2.\n",
    "    $$\n",
    "    这里 $\\tilde{I_i}$ 是原 MC 中对应的置信区间界."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上述算法还有几个细节没有说明，首先是如何产生 $\\mathscr{P}_i$ 和 $\\mathscr{C}_i$ 集合，以及如何判定在 $G$ 中的两点 $s$ 和 $t$ 是否连通。这些是涉及图论的算法，资料很多，大家自己查阅。其次是如何产生\n",
    "分布 $P(\\vec{y}, \\vec{q}, \\lambda_L, \\lambda_U)$，由于问题复杂，参考书建议直接采用 AR 方法，也即先根据 $\\vec{q}$ 随机产生 $\\vec{y}$，然后拒绝 $\\phi_U(\\vec{y}) = 0$ 和 $\\phi_L(\\vec{y}) = 1$ 的样本。如何直接产生满足要求的样本是一个可以考虑的问题。但这个问题有一定的深度和难度。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Monte Carlo积分\n",
    "\n",
    "积分问题可以看成是求面积问题的一般化。但其重要性使得我们需要单独讨论这个问题。考虑多元积分问题：\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\zeta(\\mathscr{R}) = \\int_{\\mathscr{R}}\\varphi(\\vec{x}) d\\vec{x},\n",
    "\\end{equation}\n",
    "$$\n",
    "其中 $\\varphi(\\vec{x})$ 是定义在 $m$ 维区域 $\\mathscr{R} \\subseteq \\mathscr{J}^m$ 上的可求值的 Lebesgue 可积函数。为方便讨论，我们令 $\\varphi(\\vec{x}) = 0$，对 $\\vec{x} \\in \\mathscr{J}^m \\backslash \\mathscr{R}$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "先考虑一维积分问题\n",
    "$$\n",
    "I = \\int_a^b f(x) dx,\n",
    "$$\n",
    "我们的经典数值积分方法是通过数值积分公式：\n",
    "$$\n",
    "I_n = \\sum_{i = 0}^n w_if(x_i),\n",
    "$$\n",
    "其中 $w_i$ 称为积分权重，而 $a \\leq x_0 \\leq x_1 \\leq \\cdots \\leq x_n\n",
    "\\leq b$ 被称为积分点。现在让我们类似地考虑，将 $[a, b]$ 分割成 $n$ 个等长的小区间，记为 $\\Delta_1, \\Delta_2, \\cdots, \\Delta_n$，每一个小区间的长度都是 $(b - a) / n$。记 $\\Delta_i$ 的中点为 $x_{i + \\frac{1}{2}}$，令 $f_{i + \\frac{1}{2}} := f(x_{i + \\frac{1}{2}})$，$i = 1, 2, \\cdots, n$。则一方面由可积性定义，我们有\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\tilde{I}_n := \\sum_{i = 1}^n \\frac{b - a}{n}f_{i + \\frac{1}{2}} \\to I, n \\to \\infty.\n",
    "\\end{equation}\n",
    "$$\n",
    "另一方面，构造 $f(x)$ 的分段常数逼近：\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\tilde{f}_n(x) = f_{i + \\frac{1}{2}}, x \\in \\Delta_i, i = 1, 2, \\cdots, n.\n",
    "\\end{equation}\n",
    "$$\n",
    "则显然 $\\tilde{f}_n(x) \\stackrel{\\mathrm{\\tiny a. e.}}\\longrightarrow  f(x)$, $n \\to \\infty$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在对于随机变量 $X \\sim U(a, b)$，我们定义指示随机变量\n",
    "$$\n",
    " \\phi_i(X) = \\left\\{\n",
    " \\begin{array}{ll}\n",
    "   1, & \\mbox{如果 $X$ 落在区间 $\\Delta_i$ 上};\\\\\n",
    "   0, & \\mbox{其他}.\n",
    " \\end{array}\n",
    " \\right.\n",
    " $$\n",
    "这里 $i = 1, 2, \\cdots, n$，则有\n",
    "$$\n",
    "\\tilde{f}_n(X) = \\sum_{i = 1}^n \\phi_i(X) f_{i + \\frac{1}{2}}.\n",
    "$$\n",
    "于是\n",
    "$$\n",
    "\\begin{array}{rcl}\n",
    "  E[\\tilde{f}_n(X)] &=& \\displaystyle E\\left[\\sum_{i = 1}^n \\phi_i(X) f_{i + \\frac{1}{2}}\\right]\\\\\\\\\n",
    "  &=& \\displaystyle \\sum_{i = 1}^n \\frac{1}{n} f_{i + \\frac{1}{2}} \\\\\\\\\n",
    "  &=& \\displaystyle \\frac{1}{n}\\sum_{i = 1}^nf_{i + \\frac{1}{2}}\n",
    "\\end{array}\n",
    "$$\n",
    "结合一维 MC 公式，有\n",
    "$$\n",
    "\\tilde{I}_n = (b - a) E[\\tilde{f}_n(X)].\n",
    "$$\n",
    "两边同取 $n \\to \\infty$，则有\n",
    "$$\n",
    "\\begin{equation}\n",
    "  I = (b - a) E[f(X)].\n",
    "\\end{equation}\n",
    "$$\n",
    "因此，对 $X_1, X_2, \\cdots, X_n \\sim U(a, b)$，\n",
    "$$\n",
    "\\begin{equation}\n",
    "  I_n := \\frac{b - a}{n} \\sum_{i = 1}^n f(X_i).\n",
    "\\end{equation}\n",
    "$$\n",
    "可以看做是 $I$ 的一个无偏估计。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "该结论可以推广到 $m$维。令 $\\vec{X}^{(1)}, \\cdots, \\vec{X}^{(n)}$ 是 $m$ 维独立随机向量，且在 $\\mathscr{J}^m$ 上均匀分布。则\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\bar{\\zeta}_n(\\mathscr{R}) = \\frac{1}{n} \\sum_{i = 1}^n \\varphi(\\vec{X}^{(i)})\n",
    "\\end{equation}\n",
    "$$\n",
    "是 $\\zeta(\\mathscr{R})$ 的一个无偏估计，且\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\mathrm{var} \\bar{\\zeta}_n = \\frac{\\sigma^2}{n},\n",
    "\\end{equation}\n",
    "$$\n",
    "这里\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\sigma^2 = \\mathrm{var} \\varphi(\\vec{X}) = \\int_{\\mathscr{R}} \\varphi^2(\\vec{x})dx - \\zeta^2.\n",
    "\\end{equation}\n",
    "$$\n",
    "注意 $\\sigma^2$ 计算困难，所以可以用\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\hat{\\sigma}^2_n = \\frac{1}{n - 1}\\sum_{j = 1}^n\\left[\\varphi(\\vec{X}^{(j)}) - \\bar{\\zeta}_n\\right]^2\n",
    "\\end{equation}\n",
    "$$\n",
    "来近似。然而，此公式要求存下所有的 $\\varphi(\\vec{X})$，才能最终和 $\\bar{\\zeta}_n$ 进行计算，当 $n$ 大时，对存储量要求高。常用的替代方案是利用其代数等价表达式\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\hat{\\sigma}^2_n = \\frac{1}{n - 1}\\left[\\sum_{j = 1}^n \\varphi^2(\\vec{X}^{(j)}) - n \\bar{\\zeta}^2_n\\right].\n",
    "\\end{equation}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "而对于区间估计，我们直接给出以下结果：当\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\int_{\\mathscr{R}} \\varphi^4(\\vec{x}) d\\vec{x} < \\infty\n",
    "\\end{equation}\n",
    "$$\n",
    "时，有\n",
    "$$\n",
    "\\frac{\\bar{\\zeta}_n - \\zeta}{\\sqrt{\\frac{\\hat{\\sigma}^2_n}{n}}}\n",
    "$$\n",
    "当 $n \\to \\infty$ 时趋于服从 $N(0, 1)$ 分布， 也即\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\lim_{n \\to \\infty} P\\left\\{\\frac{\\bar{\\zeta}_n - \\zeta}{\\sqrt{\\frac{\\hat{\\sigma}^2_n}{n}}} \\leq \\beta\\right\\} = \\Phi(\\beta).\n",
    "\\end{equation}\n",
    "$$\n",
    "其中 $\\Phi$ 表示标准正态分布。故可以认为对充分大的 $n$，区间\n",
    "$$\n",
    "\\begin{equation}\n",
    "  \\left[\\bar{\\zeta}_n - \\Phi^{-1}\\left(1 - \\frac{\\delta}{2}\\right)\\sqrt{\\frac{\\hat{\\sigma}^2_n}{n}},\n",
    "    \\bar{\\zeta}_n + \\Phi^{-1}\\left(1 - \\frac{\\delta}{2}\\right)\\sqrt{\\frac{\\hat{\\sigma}^2_n}{n}}\\right]\n",
    "\\end{equation}\n",
    "$$\n",
    "以概率 $1 - \\delta$ 覆盖了 $\\zeta$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "类似面积计算，在积分计算时，我们同样应该考虑最低样本数、上下界、各种有\n",
    "效抽样以及和网络等应用问题的关系这些基本问题。限于时间我们不再课堂展开\n",
    "讨论，请大家自行参考书本的第二章的剩余部分和习题。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
